






// dataurl 图片链接    filename 图片名称
function blobToFile(dataurl, filename) { //base64位图片 转图片文件
  var arr = dataurl.split(','),
    mime = arr[0].match(/:(.*?);/)[1],
    bstr = atob(arr[1]),
    n = bstr.length,
    u8arr = new Uint8Array(n);
  while (n--) {
    u8arr[n] = bstr.charCodeAt(n);
  }
  return new File([u8arr], filename, {
    type: mime
  });
}

//处理图片


// data 存放返回数据的名称
function imgPreview(file) {
  let _this = this
  // 判断是否支持FileReade
  if (!file || !window.FileReader) return
  // 创建一个reader
  var reader = new FileReader()
  // 将图片转成base64格式
  reader.readAsDataURL(file)
  // 读取成功后的回调
  reader.onloadend = function() {
    let result = _this.result
    let img = new Image()
    img.src = result
    console.log(result.length)
    img.onload = function() {
      let data = compress(img)
      console.log(data.length)
      // 创建一个FormData对象用于存放图片进行传输
      var param = new FormData()
      // 将base64位图片转换
      let imgData = self.blobToFile(data, 'ig1')
      console.log(data)
      // 将转换成图片文件格式的图片添加到param里面
      param.append('files', imgData)
      // 调用接口
      _this.api.post('/api/imgs', param).then(res => {
        console.log(res)
       // 返回数据处理
      })
    }
  }
}





function compress(img) {  //获取压缩后的图片
  let canvas = document.createElement("canvas");
  let ctx = canvas.getContext("2d");
  let initSize = img.src.length;
  let width = img.width;
  let height = img.height;
  canvas.width = width;
  canvas.height = height;
  // 铺底色
  ctx.fillStyle = "#fff";
  ctx.fillRect(0, 0, canvas.width, canvas.height);
  ctx.drawImage(img, 0, 0, width, height);

  //进行最小压缩
  let ndata = canvas.toDataURL("image/jpeg", 0.1);
  console.log("*******压缩后的图片大小*******");
  console.log(ndata.length);
  return ndata;
}



export default {
  // 获取图片信息
  uploadImgs(e) {
    let formData = new FormData()
    let reader = new FileReader()
    let imgName = e.target.files[0]
    reader.readAsDataURL(e.target.files[0])
    imgPreview(imgName)
  }
}
